<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <th:block th:include="common/include :: header('结算单编辑')"/>
</head>
<body>
<div class="ui-layout-center">
    <div class="row">
        <div class="col-sm-12 search-collapse">
            <div class="col-sm-12">
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">客户姓名：</label>
                        <label class="col-sm-6 control-label">[[${statement.customerName}]]</label>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">联系方式：</label>
                        <label class="col-sm-6 control-label">[[${statement.customerPhone}]]</label>
                    </div>
                </div>
            </div>
            <div class="col-sm-12">
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">车牌号码：</label>
                        <label class="col-sm-6 control-label">[[${statement.licensePlate}]]</label>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">汽车类型：</label>
                        <label class="col-sm-6 control-label">[[${statement.carSeries}]]</label>
                    </div>
                </div>
            </div>
            <div class="col-sm-12">
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">服务类型：</label>
                        <label class="col-sm-6 control-label">
                            [[${@dict.getLabel('si_service_catalog',statement.serviceType)}]]
                        </label>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">到店时间：</label>
                        <label class="col-sm-6 control-label"
                               th:text="${#dates.format(statement.actualArrivalTime, 'yyyy-MM-dd HH:mm')}">
                        </label>
                    </div>
                </div>
            </div>
            <div class="col-sm-12">
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">总消费金额：</label>
                        <label class="col-sm-6 control-label" id="totalAmount">[[${statement.totalAmount}]]</label>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">实付价格：</label>
                        <label class="col-sm-6 control-label" id="actuallyPaid">
                            [[${statement.totalAmount} - ${statement.discountAmount}]]
                        </label>
                    </div>
                </div>
            </div>
            <div class="col-sm-12">
                <div class="col-sm-6">
                    <div class="form-group">
                        <label class="col-sm-6 control-label">优惠价格：</label>
                        <label class="col-sm-6 control-label">
                            <input type="number" th:value="${statement.discountAmount}" id="discountAmount" name="discountAmount" onchange="updateAmount()">
                        </label>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="btn-group-sm" id="myTool" role="group">
        <a class="btn btn-success" id="save" onclick="saveFun()">
            <i class="fa fa-plus"></i> 保存
        </a>
        <a class="btn btn-primary" id="pay" onclick="payFun()">
            <i class="fa fa-cc-visa"></i> 确认实付
        </a>
    </div>

    <div class="col-sm-12 select-table table-striped">
        <table id="statementItem-table"></table>
    </div>
</div>
<div class="ui-layout-east">
    <div class="col-sm-12 search-collapse">
        <form id="serviceItem-form">
            <div class="select-list">
                <ul>
                    <li>
                        <label>名称：</label>
                        <input type="text" name="name"/>
                    </li>
                    <li>
                        <label>是否套餐：</label>
                        <select name="carPackage" th:with="type=${@dict.getType('si_car_package')}">
                            <option value="">所有</option>
                            <option th:each="dict : ${type}" th:text="${dict.label}" th:value="${dict.value}"></option>
                        </select>
                    </li>
                    <li>
                        <label>服务分类：</label>
                        <select name="serviceCatalog" th:with="type=${@dict.getType('si_service_catalog')}">
                            <option value="">所有</option>
                            <option th:each="dict : ${type}" th:text="${dict.label}" th:value="${dict.value}"></option>
                        </select>
                    </li>
                    <li>
                        <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
                                class="fa fa-search"></i>&nbsp;搜索</a>
                        <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
                                class="fa fa-refresh"></i>&nbsp;重置</a>
                    </li>
                </ul>
            </div>
        </form>
    </div>
    <div class="col-sm-12 select-table table-striped">
        <table id="serviceItem-table"></table>
    </div>
</div>
<th:block th:include="common/include :: footer"/>
<th:block th:include="common/include :: layout-latest"/>

<script th:inline="javascript">
    $('body').layout({
        east__size: '30%',
    });

    $(function () {
        var options = {
            id: "serviceItem-table",
            uniqueId: "id",
            url: "/business/serviceItem/querySaleOn",
            modalName: "服务项",
            columns: [
                {
                    field: 'id',
                    title: '服务项id',
                    visible: false
                },
                {
                    field: 'name',
                    title: '服务项名称',
                    sortable: true
                },
                {
                    field: 'originalPrice',
                    title: '服务项价格',
                    sortable: true
                },
                {
                    field: 'info',
                    title: '备注',
                    sortable: true,
                    formatter: function (value, row, index) {
                        return $.table.tooltip(value, 0, "open");
                    }
                },
                {
                    title: '操作',
                    align: 'center',
                    formatter: function (value, row, index) {
                        var actions = [];
                        actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="addServiceItem(\'' + row.id + '\')">' +
                            '<i class="fa fa-plus"></i></a> ');
                        return actions.join('');
                    }
                }]
        };
        $.table.init(options);
    });

    var statementID = [[${statement.id}]];
    $(function () {
        var options = {
            id: "statementItem-table",
            toolbar: "myTool",
            uniqueId: "itemId",
            url: "/business/statementItem/query?statementId=" + statementID,
            columns: [
                {
                    field: 'id',
                    title: '服务项id',
                    visible: false
                },
                {
                    field: 'statementId',
                    title: '结算单Id',
                    visible: false
                },
                {
                    field: 'itemName',
                    title: '服务项名称',
                    sortable: true
                },
                {
                    field: 'itemPrice',
                    title: '服务项价格',
                    sortable: true
                },
                {
                    field: 'itemQuantity',
                    title: '购买数量',
                    sortable: true
                },

                {
                    title: '操作',
                    align: 'center',
                    formatter: function (value, row, index) {
                        var actions = [];
                        actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="addServiceItem(\'' + row.itemId + '\')">' +
                            '<i class="fa fa-plus"></i></a> ');
                        actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="minusServiceItem(\'' + row.itemId + '\')">' +
                            '<i class="fa fa-minus"></i></a> ');
                        return actions.join('');
                    }
                }]
        };
        $.table.init(options);
    });

    // 更改中间表服务单项的数量
    function minusServiceItem(id) {

        var datarow = $('#statementItem-table').bootstrapTable('getRowByUniqueId', id);
        // 如果数量大于 1 ,将其数量 - 1
        if (datarow.itemQuantity > 1) {
            $('#statementItem-table').bootstrapTable('updateCellByUniqueId', {
                id: id,
                field: "itemQuantity",
                value: datarow.itemQuantity - 1
            });
        } else {
            // 如果数量为 1 ,移除这条数据
            $('#statementItem-table').bootstrapTable('removeByUniqueId', id);
        }
        updateAmount();
    }

    // 点击添加 将服务单项的数添加到中间表中
    function addServiceItem(id) {
        // 获得中间表的服务项数据 需设置 uniqueId, 每一张结算单中的服务单项 id 是唯一的
        // 重复添加 其数量会发生变化
        var data = $('#statementItem-table').bootstrapTable('getRowByUniqueId', id);
        // 判断数据是否存在
        if (data) {
            // 如果存在 数量+1
            $('#statementItem-table').bootstrapTable('updateCellByUniqueId', {
                id: id,
                field: "itemQuantity",
                value: data.itemQuantity + 1
            });
        } else {
            // 如果不存在 将服务单项数据添加到中间表中
            var row = $('#serviceItem-table').bootstrapTable('getRowByUniqueId', id);
            // 两张表的字段名不一致 需重新命名
            var newData = {
                statementId: statementID,
                itemId: row.id, // 要把服务单项 id 传过去,要不然无法根据 id 值 获得中间表数据
                itemName: row.name,
                itemPrice: row.originalPrice,
                itemQuantity: 1
            };
            $('#statementItem-table').bootstrapTable('append', newData);
        }
        updateAmount();
        /*console.log(data);
        console.log(row);*/
    }

    // 服务总价需根据 服务单项,折扣金额的改变实时改变,所以每次更改服务单项(种类或数量)之后都要调用该函数更改价格
    function updateAmount() {
        var data = $('#statementItem-table').bootstrapTable('getData', false);
        var totalAmount = 0;
        // 计算总价格
        $.each(data, function (index, item) {
            if (item.itemId) {
                totalAmount += item.itemPrice * item.itemQuantity
            }
        });
        $("#totalAmount").html(totalAmount);

        if (data.length < 1) {
            $("#totalAmount").html(0);
            $("#discountAmount").val(0);
            $("#actuallyPaid").html(0);
        }

        // 获得优惠价格
        var discountAmount = $("#discountAmount").val();
        if (!discountAmount || discountAmount < 0) {
            $("#discountAmount").val(0);
            return;
        }
        if (discountAmount >= totalAmount) {
            alert("优惠金额不能超过总金额");
            $("#discountAmount").val(0);
            return;
        }

        $("#actuallyPaid").html(totalAmount - discountAmount);

        $("#save").removeClass("disabled");
        $("#pay").addClass("disabled")
    }

    function saveFun() {
        var data = $('#statementItem-table').bootstrapTable('getData', false);
        var discountAmount = $("#discountAmount").val();
        data.push({statementId: statementID, itemPrice: discountAmount});
        console.log(data);
        var config = {
            url: ctx + "/business/statementItem/save",
            type: 'post',
            dataType: 'json',
            contentType: "application/json",
            data: JSON.stringify(data),
            beforeSend: function () {
                $.modal.loading("正在处理中，请稍后...");
            },
            success: function (result) {
                $.operate.ajaxSuccess(result);
            }
        };
        $.ajax(config);
        data.pop();

        $("#save").addClass("disabled");
        $("#pay").removeClass("disabled")


    }

    function payFun() {
        $.modal.confirm("是否确认支付?", function () {
            $.operate.get("/business/statement/pay?statementId="+statementID);
        });
    }

</script>
</body>
</html>